package src.event;

/**
 * @author Brent
 * 
 * <b>Overview</b>
 * The EventListener<E extends Event> interface allows an object to recieve notifications when an event of a particular type occurs.  In order to register as a listener for a particular event type, an object must first implement this interface, requiring it to have the appropriate eventCallback(E event) method.  Once registered, an object of this type will recieve notifications whenever the an Event of type <E extneds Event> occurs.
 * 
 * <b>Responsibilities</b>
 * This interface's only responsiblity is to ensure an object's compatability with the Event Subsystem.  It has no other responsibliites
 * 
 * <b>Collaborators</b>
 * None
 * 
 * <b>Implementor</b> - Brent
 * <b>Tester</b> - Bruce
 *
 * @param <E> - the event type the implementing class is listening for
 */
public interface EventListener<E extends Event> {
	/**
	 * This method is called when an event of the specified type is fired
	 * 
	 * @param e - the event that was fired
	 * @return true if the event is sucessfully handled
	 */
	public boolean eventCallback(E e);
}